<?php
namespace app\admin\model;
use think\Model;
use think\Exception;
use think\facade\Config;
use app\admin\model\AdminRules as Rules;
class AdminGroup extends Model
{
	// 写入模型名称 可以是当前或者别的
	protected $name='AdminGroup';

	// 设置主键
	protected $pk = 'id';

	// 设置对应字段
	protected $field = [ 'id','title','status','rules','note' ];

	// 类型转换 进入数据库时候的类型转换
	protected $type= [ 'id' => 'interger', 'title' => 'string', 'status' => 'interger', 'rules' => 'string', 'note' => 'string', ];

	// 设置新增插入时的默认值，既没有这些数据被输入时候，以下内容依然会被执行
	protected $insert =
	[
		// 状态字段 1启用用户组 0禁用用户组 3软删除
		'status' => 1,
		// 对用户组进行描述
		'note' =>'对该用户组暂未说明',
	];

	//当更新时 那些字段默认直接更新
	protected $update = [ ];

	// 写入后不可更改的数据
	protected $readonly = ['id',];

	/**
	 * initialize 初始化权限组模型方法
	 */
	protected function initialize()
	{
		// 初始化父类模型信息
		parent::initialize();
	}

	/**
	 * groupList 获取权限分组数据
	 * @return null 为空时返回
	 * @return array 返回数据信息
	 */
	public function groupList()
	{
		// 获取权限组列表
		$data = $this->comment('查询权限组列表数据内容')->where('status','neq',3)->paginate(5);
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

	/**
	 * groupRule 权限组规则查询
	 * @return null 为空时返回
	 * @return array 返回数据信息
	 */
	public function groupRule()
	{
		// 获取权限规则内容数据
		$data = Rules::comment('查询权限规则数据内容')->where('status','neq',3)
		->field('id,title,pid,level,note')->order('sort desc')->select()->toArray();
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

	/**
	 * groupGet 获取详情信息
	 * @param  int $id 权限组id
	 * @return null 为空时返回
	 * @return array 返回数据信息
	 */
	public function groupGet($id)
	{
		// 获取单条数据记录
		$data = $this->comment('查询id为'.$id.'的数据内容')->where('id','eq',$id)
		->select()->toArray();
		// 判断数据是否为空 如果为空返回空
		if (empty($data)) return null;
		// 返回数据信息
		return $data;
	}

	/**
	 * groupAdd 权限组添加操作
	 * @param  array $data 权限组数据
	 * @return bool    返回操作是否成功
	 */
	public function groupAdd($data)
	{
		try
		{
			// 进行数据操作
			$res = $this->comment('组名为'.$data['title'].'的权限组添加操作')->insert($data);
			// 返回结果判断
			return true;
		}
		catch (\Exception $e)
		{
			// 抛出错误异常
			throw new Exception($e->getMessage());
			// 返回结果判断
			return false;
		}
	}

	/**
	 * groupEdit 权限组编辑操作
	 * @param  int $id 权限组id
	 * @param  array $data 权限组数据
	 * @return bool    返回操作是否成功
	 */
	public function groupEdit($id,$data)
	{
		try
		{
			// 进行数据操作
			$res = $this->comment('id为'.$id.'的权限组编辑操作')->where('id','eq',$id)->update($data);
			// 返回结果判断
			return true;
		}
		catch (\Exception $e)
		{
			// 抛出错误异常
			throw new Exception($e->getMessage());
			// 返回结果判断
			return false;
		}
	}

	/**
	 * groupDel 权限组删除操作
	 * @param  int $id 权限组id
	 * @return bool    返回操作是否成功
	 */
	public function groupDel($id)
	{
		try
		{
			// 进行数据操作
			$res = $this->comment('id为'.$id.'的权限组删除操作')->where('id','eq',$id)->update(['status'=>3]);
			// 返回结果判断
			return true;
		}
		catch (\Exception $e)
		{
			// 抛出错误信息
			throw new Exception($e->getMessage());
			// 返回结果判断
			return false;
		}
	}
}